package com.cetcs.kmga.dataManager.service.dataManager;

import com.cetcs.kmga.common.Data;
import com.cetcs.kmga.dataManager.entity.dataManager.Resrc;
import com.cetcs.kmga.dataManager.entity.dataManager.vo.*;
import com.cetcs.kmga.dataManager.entity.global.IdAndValVo;
import com.cetcs.kmga.dataManager.entity.global.NameAndValue;

import java.util.List;
import java.util.Map;

/**
 * 数据监控.使用规律分析Service
 *
 * @author zhancghunlin
 * @version V1.0 创建时间：2017-10-10 14:58
 * Copyright 2017 by CETC
 */
public interface UsePatternAnalysisService {

    /**
     * 查询资源列表,支持根据名称模糊筛选，查询资源ID和名称
     * @return
     */
    List<IdAndValVo> listAllResources(String keyword) throws Exception;

    /**
     * 根据id获得资源信息
     * @return
     */
    ResourceAnalysisVo getResourceById(String id,String keyTime);

    /**
     * 库表访问排名
     * @return
     */
    List<Map<String, String>> getTableTraffic(String resourceId, String keyTime);

    /**
     * P排名,数据库账户排名,操作类型排名,敏感数据访问排名
     * @return
     */
    List<HistogramChartVo> findIpAccessStatistic(String resourceId,String keyTime);

    /**
     * 每日流量规律 查询
     */
    MultiLineChartVo findTrafficStatisticOfDay(String resourceId,String keyTime);

    //===============用户行为规律===================yyangs start========================



    /**
     * 分析对象列表
     */
    List<ResourceTreeDataObjectVo> getAnalysisObjectLists(Data dataMap);
    /**
     * 访问流量与访问次数
     */
    AccessTrafficAndVisitsVo getAccessTrafficAndVisits(Data dataMap);
    /**
     * 访问资源分析 排名char图
     */
    List<HistogramChartVo> getAccessResourceAnalysisForChar(String cid,String ip,String keyTime);
    /**
     * 访问资源分析 每日流量规律
     */
    MultiLineChartVo getAccessResourceAnalysisForDailyTrafficRules(Data dataMap);
    /**
     * 活跃情况分析 排名char图
     */
    List<HistogramChartVo> getActiveAnalysisForChar(Data dataMap);
    /**
     * 活跃情况分析 每日流量规律
     */
    MultiLineChartVo getActiveAnalysisForDailyTrafficRules(String cid,String ip,String keyTime);




    //===============概览=========================
    /**
     * 资源访问量排名
     */
    List<RankOfBehaviorVo> getRankOfResourceAccess(Data dataMap);
    /**
     * 每日访问量规律
     */
    List<NameAndValue> getDailyTrafficPatterns(Data dataMap);
    /**
     * 活跃IP统计（访问次数）
     */
    List<RankOfBehaviorVo> getActiveIPStatistics(Data dataMap);
    /**
     * IP来源分布
     */
    List<NameAndValue> getDistributionOfIPSource(Data dataMap);
    /**
     * 操作类型分布
     */
    List<NameAndValue> getDistributionOfOptType(Data dataMap);
    //==================================yyangs end========================
}
